package com.example.softwareconfigurationcoursedesign.Admin.PoiLog;

import com.example.softwareconfigurationcoursedesign.LoginRegister.DBHelper;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class LogDaoimpl implements LogDao {public List<Logs> queryLog(String UserId) {
    if (UserId == null) {
        return null;  // 如果输入的用户ID为null，则返回null
    }
    Connection conn = DBHelper.getConnection();  // 获取数据库连接
    String sql = "select * from Logs WHERE user_id='" + UserId + "';";  // 构造查询日志的SQL语句
    PreparedStatement stat = null;
    ResultSet rs = null;
    List<Logs> logslist = new ArrayList<Logs>();  // 创建日志列表对象
    try {
        stat = conn.prepareStatement(sql);  // 创建PreparedStatement对象
        rs = stat.executeQuery();  // 执行查询操作
        while (rs.next()) {  // 遍历查询结果集
            Logs log = new Logs();  // 创建日志对象
            log.setUserId(rs.getString("user_id"));  // 设置日志的用户ID
            log.setUserName(rs.getString("username"));  // 设置日志的用户名
            log.setLoginMethod(rs.getString("login_method"));  // 设置日志的登录方式
            log.setTimes(rs.getString("login_time"));  // 设置日志的登录时间
            log.setLogContext(rs.getString("event"));  // 设置日志的事件内容
            logslist.add(log);  // 将日志对象添加到日志列表中
        }
    } catch (SQLException e) {
        e.printStackTrace();  // 打印异常信息
    } finally {
        DBHelper.closeAll(conn, stat, rs);  // 关闭数据库连接、Statement和ResultSet
    }
    if (logslist.isEmpty())
        return null;  // 如果日志列表为空，则返回null
    else
        return logslist;  // 否则返回查询到的日志列表
}

    @Override
    public void addLog(Logs log) {
        Connection conn = DBHelper.getConnection();  // 获取数据库连接
        String sql = "INSERT Logs (user_id,username,login_method,login_time,event) VALUE(?,?,?,?,?);";  // 构造插入日志的SQL语句
        PreparedStatement stat = null;
        ResultSet rs = null;
        try{
            stat = conn.prepareStatement(sql);  // 创建PreparedStatement对象
            stat.setString(1,log.getUserId());  // 设置插入参数
            stat.setString(2,log.getUserName());
            stat.setString(3,log.getLoginMethod());
            stat.setString(4,log.getTimes());
            stat.setString(5,log.getLogContext());
            stat.executeUpdate();  // 执行插入操作
        }catch (SQLException e){
            e.printStackTrace();  // 打印异常信息
        }finally {
            DBHelper.closeAll(conn,stat,rs);  // 关闭数据库连接、Statement和ResultSet
        }
    }
}

